const app = getApp()
const api = require('../../../utils/api')

Page({
  data: {
    orderNo: '',
    order: null,
    loading: false,
    // 客户订单状态映射表
    statusMap: {
      1: '待付款',
      2: '待发货',
      3: '待收货',
      4: '已完成',
      5: '已取消'
    }
  },

  onLoad(options) {
    if (options.orderNo) {
      this.setData({
        orderNo: options.orderNo
      });
      this.loadOrderDetail();
    }
  },

  // 加载订单详情
  async loadOrderDetail() {
    if (this.data.loading) return;

    try {
      this.setData({ loading: true });
      console.log('开始加载订单详情，订单号:', this.data.orderNo);
      
      const res = await api.getCustomerOrderDetail(this.data.orderNo);
      console.log('订单详情API响应:', res);
      
      if (res.success) {
        // 判断订单是否已评价
        const isReviewed = res.data.isReviewed === true;
        
        // 处理商品数据
        const products = res.data.orderItems.map(item => ({
          id: item.productId,
          name: item.productName,
          price: item.productPrice,
          quantity: item.quantity,
          imageUrl: item.imageUrl || (item.product ? item.product.imageUrl : null) || '/images/default-product.png'
        }));
        
        // 确保每个商品都有图片URL
        products.forEach(product => {
          if (!product.imageUrl || product.imageUrl === 'undefined' || product.imageUrl === 'null') {
            product.imageUrl = '/images/default-product.png';
          }
        });
        
        const order = {
          ...res.data,
          statusText: this.data.statusMap[res.data.status],
          products: products,
          reviewed: isReviewed
        };
        
        this.setData({ order });
        console.log('订单详情加载成功:', order);
      } else {
        console.error('加载订单详情失败，API返回错误:', res.message);
        wx.showToast({
          title: res.message || '加载失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('加载订单详情失败，发生异常:', error);
      wx.showToast({
        title: '加载失败: ' + (error.message || '未知错误'),
        icon: 'none'
      });
    } finally {
      this.setData({ loading: false });
    }
  },

  // 格式化价格
  formatPrice(price) {
    return parseFloat(price).toFixed(2)
  },

  // 取消订单
  async onCancelOrder() {
    try {
      const res = await api.cancelCustomerOrder(this.data.orderNo)
      if (res.success) {
        wx.showToast({
          title: '取消成功',
          icon: 'success'
        })
        // 重新加载订单详情
        this.loadOrderDetail()
      } else {
        wx.showToast({
          title: res.message || '取消失败',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('取消订单失败:', error)
      wx.showToast({
        title: '取消失败',
        icon: 'none'
      })
    }
  },

  // 支付订单
  async onPayOrder() {
    try {
      const res = await api.payCustomerOrder(this.data.orderNo)
      if (res.success) {
        wx.showToast({
          title: '支付成功',
          icon: 'success'
        })
        // 重新加载订单详情
        this.loadOrderDetail()
      } else {
        wx.showToast({
          title: res.message || '支付失败',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('支付订单失败:', error)
      wx.showToast({
        title: '支付失败',
        icon: 'none'
      })
    }
  },

  // 确认收货
  async onConfirmOrder() {
    try {
      console.log('开始确认收货', this.data.orderNo)
      const res = await api.confirmCustomerOrder(this.data.orderNo)
      
      if (res.success) {
        wx.showToast({
          title: '确认成功',
          icon: 'success'
        })
        
        console.log('确认收货成功，准备跳转至评价页面')
        
        // 等待提示显示一会儿
        setTimeout(() => {
          // 跳转到评价页面
          this.navigateToReview()
        }, 1500)
        
        // 重新加载订单详情（在后台进行，不影响跳转）
        this.loadOrderDetail()
      } else {
        console.error('确认收货API返回错误:', res.message)
        wx.showToast({
          title: res.message || '确认失败',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('确认收货失败:', error)
      wx.showToast({
        title: '确认失败',
        icon: 'none'
      })
    }
  },
  
  // 评价商品
  goToReview(e) {
    const { productId } = e.currentTarget.dataset;
    if (!productId) {
      wx.showToast({
        title: '商品信息不存在',
        icon: 'none'
      });
      return;
    }
    
    wx.navigateTo({
      url: `/pages/product/product?id=${productId}&from=order&orderNo=${this.data.orderNo}`
    });
  },

  // 跳转到评价页面
  navigateToReview() {
    console.log('执行跳转到评价页面，订单号:', this.data.orderNo);
    
    // 使用全局方法跳转到评价页面
    const app = getApp();
    if (app && app.gotoReview) {
      app.gotoReview(this.data.orderNo);
      return;
    }
    
    // 备选方案：直接跳转
    wx.navigateTo({
      url: `/pages/review/review?orderNo=${this.data.orderNo}`,
      success: function(res) {
        console.log('跳转到评价页面成功', res);
      },
      fail: function(error) {
        console.error('跳转到评价页面失败', error);
        // 失败后尝试二次跳转
        setTimeout(() => {
          wx.navigateTo({
            url: `/pages/review/review?orderNo=${this.data.orderNo}`,
            fail: (err) => {
              console.error('二次跳转失败', err);
              wx.showToast({
                title: '跳转评价页面失败',
                icon: 'none'
              });
            }
          });
        }, 500);
      }
    });
  },

  // 删除订单
  async onDeleteOrder() {
    wx.showModal({
      title: '提示',
      content: '确定要删除此订单吗？',
      success: async (res) => {
        if (res.confirm) {
          try {
            console.log('开始删除订单:', this.data.orderNo);
            const res = await api.deleteCustomerOrder(this.data.orderNo);
            
            if (res.success) {
              wx.showToast({
                title: '删除成功',
                icon: 'success'
              });
              
              // 返回上一页
              setTimeout(() => {
                wx.navigateBack();
              }, 1500);
            } else {
              wx.showToast({
                title: res.message || '删除失败',
                icon: 'none'
              });
            }
          } catch (error) {
            console.error('删除订单失败:', error);
            wx.showToast({
              title: '删除失败',
              icon: 'none'
            });
          }
        }
      }
    });
  },

  // 处理图片加载错误
  onImageError(e) {
    console.log('图片加载错误:', e);
    const { productIndex } = e.currentTarget.dataset;
    
    // 构建更新路径
    const updatePath = `order.products[${productIndex}].imageUrl`;
    
    // 设置为默认图片
    this.setData({
      [updatePath]: '/images/default-product.png'
    });
  }
}) 